extends 动作数据类
class_name 探索动作类

func 探索区域(区域数据:区域数据类):
	GameData.世界数据.世界时间.当前时间+=耗时
	区域数据.探索进度+=4
#	var 探索区域列表=获取探索区域列表(区域数据)
	var 探索物列表:Array=获取探索物列表(区域数据)
	return 探索物列表

func 获取探索区域列表(区域数据:区域数据类):
	var 探索进度效果=区域数据.探索进度效果
	var 环境卡牌数据列表=区域数据.环境卡牌数据列表
	
	var 探索进度=区域数据.探索进度
	var 探索区域列表:Array=[]
	for 效果 in 探索进度效果:
		var 进度:int=探索进度效果[效果]
		if 探索进度>进度 and !GameResource.包含卡牌数据(环境卡牌数据列表,效果):
			var 探索区域信息:Dictionary={}
			探索区域信息[效果]=1
			探索区域列表.append(探索区域信息)
	return 探索区域列表

func 获取探索物列表(区域数据:区域数据类):
	var 探索物信息列表=区域数据.探索物信息列表
	var 权重列表:Array[int]=[]
	var 当前总权重:int=0
	for 物品index in 探索物信息列表:
		var 物品信息=探索物信息列表[物品index]
		if 物品信息.限次<0 or 物品信息.限次>0:
			当前总权重+=物品信息.基础权重
		权重列表.append(当前总权重)
	
	var 探索物列表:Array=[]
	var 探索物个数:int=randi_range(1,3)
	for i in range(探索物个数):
		var 随机数:int=randi_range(1,当前总权重)
		var 探索物index:int=-1
		for index in 权重列表.size():
			if 随机数<=权重列表[index]:
				探索物index=index+1
				break
				
		var 物品信息=探索物信息列表[str(探索物index)]
		if 物品信息.限次>0:
			物品信息.限次-=1
		var 探索物信息:Dictionary={}
		探索物信息[物品信息.卡牌id]=randi_range(物品信息.数量_min,物品信息.数量_max)
		探索物列表.append(探索物信息)
	return 探索物列表
